// 写一个函数，功能还是比较 字符串 a 和  b ， 但是要限定只比 n 位

//  MyStrncmp( a , b ，n) 是 在前面 n 位 用 a  减  b  然后输出第一个不相同的位的字符相减的值

//此时出现一个问题，到底该比几位，我们可以使用一个 宏定义函数 来判定这个时候的最小数
//（也就是判定到底是 a字符串 的大小   b的字符串的大小 和 n 的值 到底谁是最小的）
// 由此来判断到底比几位

#include<stdio.h>
#include<string.h>

#define Min( a , b ) (a) < (b) ? (a) : (b)
//使用三目运算符可以有效解决这个问题  试问 a小于b，如果是真 就取 a 的值，也就是小的值。 
//                                      如果是假，证明a不小于b，此时取b的值就是小值

long MyStrlen(char *s)
{
    int count = 0;
    while(*s != '\0')
    {
        count++;
        s++;
    }
    return count;
}



int MyStrncmp( char* a , char* b , int n )
{
    n = Min(  Min ( MyStrlen(a) , MyStrlen(b) )  , n );


    while( *a - *b == 0 && n != 1)
    {
        a++;
        b++;
        n--;
    }
    return *a - *b;


}


int main()
{
    char* s1 = "abc";
    char* s2 = "abd";
    
    int n = 6;
   
    printf("此时a字符串与b字符串的 %d 位的比较结果是 %d \n",n,MyStrncmp(s1,s2,n));
    printf("此时a字符串与b字符串的 %d 位的比较结果是 %d \n",n,strncmp(s1,s2,n));

    return 0;
}